package clients;

import java.util.ArrayList;
import java.util.List;
import java.util.Random;

import Windows.FenetreSimu;
import barsbieres.Bar;
import barsbieres.Biere;
import barsbieres.Main;

public class ClientMoyen extends Client {

	//Attributs
	protected final int FIDELITE;
	private List<Bar> blackList;

	//Constructeurs
	public ClientMoyen(ArrayList<Biere> bieres) {
		super();
		this.nomC = "Client moyen";
		bieresPreferees = bieresPreferees(bieres);
		this.blackList = new ArrayList<Bar>();
		this.FIDELITE = new Random().nextInt(100);
	}

	//Methodes
	protected int getFidelite() {
		return this.FIDELITE;
	}

	@Override
	public void choisitBar(ArrayList<Bar> listeBars) {
		if(blackList.size() == FenetreSimu.bars.size()){
			blackList.clear();
		}
		boolean trouver = false;
		while(!trouver){
			int r = new Random().nextInt(listeBars.size());
			if(!blackList.contains(listeBars.get(r))){
				listeBars.get(r).incNbrCMoyen();
				setBar(listeBars.get(r));
				trouver = true;
				//System.out.println("Nouveau bar : " + getBar().getGerant().getNom());
			}
		}
	}

	@Override
	public void satisfaction(Bar b, boolean satisfait) {
		if(!satisfait){
			if(FIDELITE > new Random().nextInt(100)){
				b.decNbrCMoyen();
				blackList.add(b);
				//System.out.println("Changement de bar : " + b.getGerant().getNom());
				choisitBar(FenetreSimu.bars);
			}
		}
	}
}
